package van.planifolia.service.impl;

import com.github.pagehelper.PageHelper;
import org.springframework.stereotype.Service;
import van.planifolia.mapper.RoleDao;
import van.planifolia.pojo.Role;
import van.planifolia.service.RoleService;
import van.planifolia.vo.RoleVo;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Created by Intellij IDEA<br>
 * 角色的业务实现类
 *
 * @author Planifolia.Van
 * @version 1.0
 * @date 2022/10/11 14:53
 */
@Service("roleService")
public class RoleServiceImpl implements RoleService {

    @Resource(name = "roleDao")
    private RoleDao roleDao;

    /**
     * 根据uid查询用户的角色信息
     *
     * @param uid 用户的uid
     * @return 用户的角色信息以及全部的角色信息
     */
    @Override
    public Map<String, Object> getAllRoleAndUserRole(Integer uid) {
        //分别查询所有的角色与当前用户的角色
        List<Role> allRole = roleDao.selectRoleByMsg(null, null);
        List<String> userRole = roleDao.selectRoleIdByUid(uid);
        //将查询到的信息放到Map里面
        Map<String, Object> tempMap = new HashMap<>();
        tempMap.put("allRole", allRole);
        tempMap.put("userRole", userRole);
        return tempMap;
    }

    /**
     * 按照用户id修改用户的角色
     * @param uid 用户的id
     * @param roles 角色们
     * @return 是否修改成功
     */
    @Override
    public boolean modifyRoleByUid(Integer uid, Integer[] roles) {
        //先删除
        int a = roleDao.deleteRoleByUid(uid);
        //后添加
        int b = roleDao.addRoleByUid(uid, roles);
        return a > 0 && b > 0;
    }

    /**
     * 获取全部的角色信息
     * @param roleVo 角色的查询条件
     * @return 全部的角色信息
     */
    @Override
    public List<Role> getAllRole(RoleVo roleVo) {
        return roleDao.selectRoleByMsg(roleVo.getRolename(), roleVo.getRolename());
    }
}
